// 使用class关键字来定义一个类
/**
 * 对象中主要包含两个部分：
 * 1. 属性
 * 2. 方法
 */
class Person {
  /**
   * 直接定义的属性是实例属性，需要通过对象的实例访问
   * 使用static关键字开头的属性是静态属性（类属性），可以直接通过类名访问
   * readonly关键字修饰的属性只能通过构造函数来初始化
   */
  // 定义实例属性
  readonly name: string = "孙悟空";
  // 定义类属性
  static age: number = 18;
  // constructor(name: string, age: number) {
  //   this.name = name;
  //   this.age = age;
  // }

  /**
   * 如果方法以static开头 则表示该方法为静态方法，可以直接通过类名调用
   */
  // 定义实例方法
  sayHello() {
    console.log("hello");
  }
}
const per = new Person();
console.log(per);
console.log(per.name);
// per.name = "猪八戒";
per.sayHello();
console.log(per.name);
console.log(Person.age);
